package com.kingmed.kmss.common.idgenerator;


import com.kingmed.kmss.common.idgenerator.impl.BizIdGeneratorServiceImpl;
import com.kingmed.kmss.common.utils.AppContextUtil;

/**
 * 提供生成各类业务编号的服务。如:交易编号, 业务编号 这些编号是唯一的，一般会由几段组成，如：机构号+业务类型+日期+自然序号。
 * 这是一个单例模式，可以避免多实例并发抢用计数资源。
 * 使用方法：BizIdGenerator.INSTANCE.generateTransactionId("100", "901");
 * 
 *
 */
public enum BizIdGenerator {

	INSTANCE;
	private IBizIdGeneratorService bizIdGeneratorService;

	BizIdGenerator() {
		this.bizIdGeneratorService = (IBizIdGeneratorService) AppContextUtil.getBean(BizIdGeneratorServiceImpl.class);
	}

	/**
	 * 生成交易编号
	 * 
	 * @param orgNo： 机构号
	 * @param transactionType: 交易类型
	 * @return 交易编号 = 机构号+交易类型+日期+序号
	 */
	public String generateTransactionId(String orgNo, String transactionType) {
		String transId = bizIdGeneratorService.generateTransactionId(orgNo, transactionType);
		return transId;
	}

	public String generateProcessBizKey(String bizType) {
		return bizIdGeneratorService.generateProcessBizKey(bizType);
	}

}
